package com.shopping.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.diagnosis.DiagnosisUtils;
import com.alipay.api.domain.AlipayTradePrecreateModel;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.domain.GoodsDetail;
import com.alipay.api.domain.BusinessParams;
import com.alipay.api.request.AlipayTradePrecreateRequest;

import com.alipay.api.FileItem;
import com.shopping.bean.Order;

import java.util.Base64;
import java.util.ArrayList;
import java.util.List;

public class PaymentUtil {


//    public static void main1(String[] args) throws AlipayApiException {
//        String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCtt4zbNWinILU9PkfNpGwg0PALbmkZaNnsI6eYK4XbY6wxn3NPqfGgg3NYwErpslfDNEifGREoFx0GiA1D/IvRqGSSj/S+yHqNvO+7wBqgi5w6T8hQKkiSItgz9IS5rmAWfHL5GlT2Ao+DKalQJ+J4qGDNNeepZdcmnKMPc/B+NbQ8F8/apjG0jZPhDn7VmbUTcotGVWb+X/zsn+6xrx/U3ANyAfMkTib52V5ARlCKXEx5NWqEs5vBOCRQnzf0McC6xHR3XLLnYWbU9GtLb+4Ff8GTMXT5Dl4n/nOsfMx6Emg+lII9arppwjOUG7CHdUKTHEs7l7sr0llkSOnMQpYHAgMBAAECggEBAKWmqBzIezkTiYATCalhJvLMCnr8GCBwyY3SGhiTOBuSmjrfj7fhmFW1w6JYC5d5xxKPosiDwMZ38+esiOnRwwp0ByNzPrFGvwa1qe1hLIL3XkyEk8FN8NHZhE1W19GwJFSM6536rBXDL1KlwZx7zAu+lEBbLMNuJ5HcP+mWZzgRLvXUCyxf4cJuOZwX6MhunXDaAnNlB6i8HT+OI0yTvhvQYm33U0EHRnwf3fDIaR7XSW4zznT7uE5OlLQcsnOxed3sP0MhYxfcUGzwzRKDMHVy76aBMJlVLEnZi/I2pv+mtRrEFEMfXx+xNgcXdWf3uAkk5gTez0zslCHpxmMzHRECgYEA4SpQpTLnQ9sbIcT/LuEK+UFTBCdhJCJw9cAa3UX3Qfc569wH/8/eaOkp9fFhmAvOtBl4Ijzw+TyXQCCT/82VB4il/fzbvwf8we9xIAyG1PKKNhZp69TY5FXAlONjbRRiffnxQRN4sNvM+V6jY6qLYwkkJ4bynnKk11ohZS7DQzMCgYEAxYGY48DPuUiAFikhGGPy+ytrKIVwmUkpLjSoYjcRLn4nBONyx+owtYn4Qefqt9u+j/hj+FcONUAy3cUW5mKd0JrjTD9My+MAGeBOMDAShEYoilvuXXBgzx7P6FKrgJ4i/OaSTKlejtavFPaVjf1ggTY8NWUSv1Og8KPopTXYId0CgYBJSI5q1gBzE1LnUMiFJ3V83of4aCCztAnz0gxsTCNHcwGFBF4OIkeO+aRQiblr1Rv3ffqdmhwL4m6PzoqczPpeM1ljKvMSX7UiIZ4+AhW4JSBarjzXJrVYy5gcXU206NeNjNW6im3TkhZKa0TeYVlwaD8+Jiu86i9Ab/NCjU+8BQKBgHMDaRkX6t8mzRAam18stQ521kweiNd6tzRlDblEAAlnBSnfmbO5OOw+kAcxGoo+uNX1+6FecLOp0vU6FH/M5cHYsIxyQDJq2mA3MtD07ZOBl5IavtBC5N04QDI2EhEwBYfobUGfT6U2d3ZpseWhq1UTVDRzy1sHRC1eBdhPZrExAoGAWAtXRCGJNg5Io9r8VpnMn7tYFLF4IzF+vYhoUrOf8Ijn9ERXAPhtRItvJmhO9J9YzSQ/9DfiMbMn/v+fLW+by7QwrHiY8eIdJPgiKPcnKOLey1+SOXe2FmouD+NFgxjR5vPyOgT1Lw5vpR9naqFdLzFzZttEWzKa29Che9gbMbs=";
//        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9xSpVNvnEDMNIt4aIArSByOsYpgmpOJhwr3kVvBJkrcErW1cY26APjBGOxFj5Ng1TuBatl1W72p++h0Q6gPPp2le2kulqapdqYnPpIRFHM712Y9er3ksB3NMNnxGCXjGUSMdVWU9FI9ogBXTJxM3XIhCIidrbTofNIJ3WVmTc5ZyiICu19Fq3vW37KwGahLJgWQD+YU8IQfVwA2TzR6AplsIKgSXlTOO5mV9BCLcsHAUd1cLUSospCJPYMyphjfd3ZIgUrv/WgCCfF8rMjenp1HFe7sFyc3hZyaw66wAFPX1aPRB/h6VomglsLM4uUsimvcw1fFdU2J3Ovva3GB7hwIDAQAB";
//        AlipayConfig alipayConfig = new AlipayConfig();
//        alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
//        alipayConfig.setAppId("9021000140673885");
//        alipayConfig.setPrivateKey(privateKey);
//        alipayConfig.setFormat("json");
//        alipayConfig.setAlipayPublicKey(alipayPublicKey);
//        alipayConfig.setCharset("UTF-8");
//        alipayConfig.setSignType("RSA2");
//        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
//        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
//        AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
//        model.setOutTradeNo("20150320010101001");
//        model.setTotalAmount("88.88");
//        model.setSubject("Iphone6 16G");
//        request.setBizModel(model);
//        AlipayTradePrecreateResponse response = alipayClient.execute(request);
//        System.out.println(response.getBody());
//        if (response.isSuccess()) {
//            System.out.println("调用成功");
//        } else {
//            System.out.println("调用失败");
//            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
//            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
//            // System.out.println(diagnosisUrl);
//        }
//    }

    public static String payment(Order order) throws AlipayApiException {
        // 初始化SDK
        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());

        // 构造请求参数以调用接口
        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
        AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();

//            // 设置商户订单号
        //model.setOutTradeNo("20150320010101001");
        model.setOutTradeNo(order.getCode());
//
//            // 设置订单总金额
        model.setTotalAmount(order.getMoney().toString());
//
//            // 设置订单标题
        model.setSubject("TLC商城");
//
//            // 设置产品码
        model.setProductCode("FACE_TO_FACE_PAYMENT");

        // 设置卖家支付宝用户ID
        model.setSellerId("2088721061066281");

        // 设置订单附加信息
//        model.setBody("Iphone6 16G");
//
//            // 设置订单包含的商品列表信息
//            List<GoodsDetail> goodsDetail = new ArrayList<GoodsDetail>();
//            GoodsDetail goodsDetail0 = new GoodsDetail();
//            goodsDetail0.setGoodsName("ipad");
//            goodsDetail0.setQuantity(1L);
//            goodsDetail0.setPrice("2000");
//            goodsDetail0.setGoodsId("apple-01");
//            goodsDetail0.setGoodsCategory("34543238");
//            goodsDetail0.setCategoriesTree("124868003|126232002|126252004");
//            goodsDetail0.setShowUrl("http://www.alipay.com/xxx.jpg");
//            goodsDetail.add(goodsDetail0);
//            model.setGoodsDetail(goodsDetail);

//            // 设置业务扩展参数
//            ExtendParams extendParams = new ExtendParams();
//            extendParams.setSysServiceProviderId("2088511833207846");
//            model.setExtendParams(extendParams);

        // 设置商户传入业务信息
//            BusinessParams businessParams = new BusinessParams();
//            businessParams.setMcCreateTradeIp("127.0.0.1");
//            model.setBusinessParams(businessParams);

        // 设置可打折金额
//        model.setDiscountableAmount("80.00");

        // 设置商户门店编号
//        model.setStoreId("NJ_001");

        // 设置商户操作员编号
//        model.setOperatorId("yx_001");

        // 设置商户机具终端编号
//        model.setTerminalId("NJ_T_001");

        // 设置商户的原始订单号
//        model.setMerchantOrderNo("20161008001");

        request.setBizModel(model);
        request.setNotifyUrl("http://7a11f68d.r20.vip.cpolar.cn/order/paymentsuccess");
        // 第三方代调用模式下请设置app_auth_token
        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");

        AlipayTradePrecreateResponse response = alipayClient.execute(request);
        System.out.println(response);
        System.out.println(response.getBody());


        if (response.isSuccess()) {
            String body=response.getBody();
            JSONObject obj=JSON.parseObject(body);
            obj=obj.getJSONObject("alipay_trade_precreate_response");
            String  qr_code=obj.getString("qr_code");
            System.out.println(qr_code);
            System.out.println("调用成功");
            return qr_code;
        } else {
            System.out.println("调用失败");
            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
            String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
            System.out.println(diagnosisUrl);
            return null;
        }
    }

    private static AlipayConfig getAlipayConfig() {
        String privateKey  = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCMK7UaTJbD1fV7xRUOjSW6oI5CCr1CAQi62wfUow2lxr3yh7VqwO21EUnSAVWgBReW/VloW+MVY2jZrC9i20na4VsijKKAv4LMCrG29oQxIEtyb7VLsuGE7ULS0e4YSWJBgEQd1sxtsIgyK2eCNHn/mX3E0ayJ2fDdzd9c9hMDtcUNlwcNUex1xGykeCDKZVZ/AP8uYcCIxdbXi+XwQRSqyAGssBYQhXsUOwV4mxQFbS8849mXDrm+WC5SpyfUosnalUnqelVdT/enb4ZStvFoU8t1k+n3PxRlDcDzwJRBB9PJL4cTGvE9Ap/03QMsL87t4bBLVkXR40jE7bAJ1y2FAgMBAAECggEAPZj3fRcrKeRcfIefOUXNzrW/zkXp5ZeOvo6CYm9FEBTGZE4+6yrdSzTNu/vaJPgX5cJwB+xZXozRBtcj+81iJ03hPs2OnAWM9R29+ylZ7jzC6wcsJJf3gvLA6uRWPVYCV8aGKJa8P3fUYjewxQdKlYhePJ/nsqyTrOVLww5gTMBmT7AWR4gAfoavtTgeS43aUaPWlf3KHxsrhjCwC5v4Jk8mfrv5FA4XGnWUhu5MyZ4QA6vQkILjd9g62plNjJVQ88BkpkoF5uJSv2Ron6nA50IwBSICY3gFAfGhn10T4sUbyruyYGLqcfHVvC7erNhol3Jvho0P+Xpi9f6YtgeWAQKBgQD/q0Ks4iy+WdINu36fEnOGaoI9o86a2BJLT3S/iRPp3nEMgK0DfETgbaEEVVdkAmAYbMzSQ7EU9t5qw7ktXgqtkMHo7vWBFACZORMpP+5wPCNOAz5xAbDU96/rmPGHiB21yBVnNXodekSAOpVKIxpCAucqC1k7BNDrXRt1KyacQwKBgQCMWip8YFoD9A+KwDrBZsUaUxbcVXys1DW54ksBdUq3SyMTMxnmodeLf83ssFLfTTHWzCUSKs1As5pPDZzW2vpEB64vJTOnenIgsP/ZDhGaDXEi7Z9cd0/hC5nRylKTjONNpnCfDBZ9rE38DCjDmReird4Emwp+y9eEOpSoxDvWlwKBgQC2b9GzJe2Bovxlui3/ep4fA2+OZo4uJhLf1IHdjwY7svP+VO+gdhN8Bh6IxhEHFz7VDwYU4CLDb+mES8eenOWHtqz391QOWGSY8YY/wBP32KHksCHlZ6x0O4430ro+2R1CMtU7AYjy8eVhjuwqq+O3yPSFJvX0TFp8KMNIF5OEmwKBgQCA5raqcFt70gUMK6xKv7Y6jSErzx+oI2YMiHbWqgCrAsj98yrQlMc/iWt4/B/Akkc5vVg2rTTBPbJ09E2dTpQXMu6YwhQEtwJmX+k6Uh98WugTaiW4aKPmTh9BfA4HEZgZUsmQaSum1D7zQ7+UlOAOOpzzoekrts8C1EKAFWnXlQKBgCCx0S6qrmnbXKapL3J9UR+MFbd4AwjYgneRSA01WA4dOGp0qU3WP44aDGitQxd4raPRZvabZeOCTDPJSvrikECoLEyBohcxXukh5UnROx5Yos222XzpnK/NgL8UBBi8uASzjaXRCWjgo2/GLTLXQA8gWJFS3ZvBL5f0hijOWxtV";
        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxgAWA5d3K0ITJ1o9ciowUVXvoLH/dZqJZYXShe9d+h/51qQSmyAZp39to0NVUkCI7mXTrcqCuF+13K2GXXchYH44xuWKmuHHGNqSQ+kYExw4WzM6/R2Nr82OfKNlcpWIwaIMvSIhc1N0PsG3xWTgS1cXal51Ybdhnm68nOk2tyC1uWdspdfitNT+/MMQzvJSArsXeVjBztIEt7zn1LyGuBgIGtlGtRo7yi4WHtiVxo6A3/rxokb9Mgkmzh/s2epR7Zz96yHD9asYGqCwCkgGtVxw3hKCJgSGQ7oCvlEbhrIAtVv1DXe7Irmyi6GSLjtQKRCUZk3tZ7JlSv5jf1LjpQIDAQAB";
        AlipayConfig alipayConfig = new AlipayConfig();
        alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
        alipayConfig.setAppId("9021000146601392");
        alipayConfig.setPrivateKey(privateKey);
        alipayConfig.setFormat("json");
        alipayConfig.setAlipayPublicKey(alipayPublicKey);
        alipayConfig.setCharset("UTF-8");
        alipayConfig.setSignType("RSA2");
        return alipayConfig;
    }
}